/**
 * Created by qijialin on 2016/12/26.
 */

/**
 * 模拟 ibcpAjax 类
 * @type {{}}
 */
var ibcpAjax ={};

/**
 *查询方法
 * @param dataUrl   数据请求的URL
 * @param jsonData  Json数据参数
 * @param isAsync   是否异步 true/false
 * @param callBack  成功回调函数
 * @param noLoop    不显示等待动画
 * @constructor
 */
ibcpAjax.Select = function(dataUrl, jsonData, isAsync, callBack, noLoop){
    var type = 'get';
    ibcpAjax.Ajax(dataUrl,jsonData,type, isAsync, callBack, noLoop);
}

/**
 *添加方法
 * @param dataUrl   数据请求的URL
 * @param jsonData  Json数据参数
 * @param isAsync   是否异步 true/false
 * @param callBack  成功回调函数
 * @param noLoop    不显示等待动画
 * @constructor
 */
ibcpAjax.Insert = function(dataUrl, jsonData, isAsync, callBack, noLoop){
    var type = 'post';
    ibcpAjax.Ajax(dataUrl,jsonData,type, isAsync, callBack, noLoop);
}

/**
 *修改方法
 * @param dataUrl   数据请求的URL
 * @param jsonData  Json数据参数
 * @param isAsync   是否异步 true/false
 * @param callBack  成功回调函数
 * @param noLoop    不显示等待动画
 * @constructor
 */
ibcpAjax.Update = function(dataUrl, jsonData, isAsync, callBack, noLoop){
    var type = 'put';
    ibcpAjax.Ajax(dataUrl,jsonData,type, isAsync, callBack, noLoop);
}

/**
 *删除方法
 * @param dataUrl   数据请求的URL
 * @param jsonData  Json数据参数
 * @param isAsync   是否异步 true/false
 * @param callBack  成功回调函数
 * @param noLoop    不显示等待动画
 * @constructor
 */
ibcpAjax.Delete = function(dataUrl, jsonData, isAsync, callBack, noLoop){
    var type = 'delete';
    ibcpAjax.Ajax(dataUrl,jsonData,type, isAsync, callBack, noLoop);
}

/**
 *Ajax 访问后台数据
 * @param dataUrl   数据请求的URL
 * @param jsonData  Json数据参数
 * @param type      请求类型
 * @param isAsync   是否异步 true/false
 * @param callBack  成功回调函数
 * @param callBack  不显示等待动画
 * @constructor
 */
ibcpAjax.Ajax = function(dataUrl, jsonData, type, isAsync, callBack, noLoop){
    var tra = true; //是否对参数进行序列化 get模式下不需要
    if(!noLoop){
        var index = ibcpLayer.Load(2);
    }
    if(type == 'get'){
        tra = false;
    }
    $.ajax({
        url: dataUrl,
        data: jsonData,
        type: type,
        traditional: tra,
        xhrFields:{ withCredentials:true},
        dataType: "json",
        async: isAsync,        //默认为ture表示异步，false同步--ajax的回调方法中弱还需要掉用其他ajax方法 必须false
        success: function (result) {
            var errCode = result.errorCode;
            if (errCode == 0) {
                ibcpLayer.Close(index);
                callBack(result);
            }
            else{
                ibcpLayer.Close(index);
                ShowErrInfo(errCode);
            }
        },
        error: function () {
            ibcpLayer.ShowMsg('通讯异常!');
            ibcpLayer.Close(index);
        }
    });
}


function ShowErrInfo(errCode){
    var dataUrl = serverPath + 'errorCode/findErrorCode';
    var jsonData = {'code':errCode};
    $.ajax({
        url: dataUrl,
        data: jsonData,
        type: 'get',
        traditional: true,
        xhrFields:{ withCredentials:true},
        dataType: "json",
        async: true,        //默认为ture表示异步，false同步--ajax的回调方法中弱还需要掉用其他ajax方法 必须false
        success: function (result) {
            var eCode = result.errorCode;
            if (eCode == 0) {
                if(result.data == null){
                    ibcpLayer.ShowMsg('['+ errCode +']：未找到该代码错误描述');
                }
                else {
                    ibcpLayer.ShowMsg('['+ errCode +']：' + result.data.description);
                }
            }
            else{
                ibcpLayer.ShowMsg('网络异常或服务器故障,请联系管理员');
            }
        },
        error: function () {
            //ibcpLayer.Close(index);
            ibcpLayer.ShowMsg('通讯异常!');
        }
    });
}



